#pragma once

#include "Enums.h"

namespace StillDesign
{
	namespace NvApi
	{
		public value class GpuThermalSensorDetails
		{
			private:
				ThermalController _controller;
				int _defaultMinTemp;
				int _defaultMaxTemp;
				int _currentTemp;
				ThermalTarget _target;
				
			public:
				static GpuThermalSensorDetails ToManaged( NV_GPU_THERMAL_SETTINGS thermalSettings, int thermalSensor );
				
				property ThermalController Controller
				{
					ThermalController get();
				}
				property int DefaultMinimumTemperature
				{
					int get();
				}
				property int DefaultMaximumTemperature
				{
					int get();
				}
				property int CurrentTemperatre
				{
					int get();
				}
				property ThermalTarget Target
				{
					ThermalTarget get();
				}
		};
		
		public ref class GpuThermalSettings
		{
			private:
				array<GpuThermalSensorDetails>^ _sensors;
				
			internal:
				GpuThermalSettings( NV_GPU_THERMAL_SETTINGS thermalSettings );
				
			public:
				property array<GpuThermalSensorDetails>^ Sensors
				{
					array<GpuThermalSensorDetails>^ get();
				}
		};
	};
};